package com.cykj.page01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * @BelongsProject: HandTomcat
 * @BelongsPackage: com.cykj.page02
 * @Author: 阿隆
 * @CreateTime: 2025-10-23 20:36
 * @Description: 静态资源处理器
 * @Version: 1.0
 */
public class StaticResourceHandler {
    /*
     * 给一个静态资源路径
     *   获取文件的字节数据
     *   以及对应的媒体类型
     * */

    //静态资源路径
    private String filePath;

    //媒体类型
    private String media;

    //文件的字节数据
    private byte[] fileByte;


    public StaticResourceHandler(String filePath) {
        this.filePath = filePath;

        getFileMedia();

        getByte();
    }


    /**
     * @Description: 获取文件的字节数据
     * @Param: []
     * @return: void
     */
    private void getByte() {
        try {
            FileInputStream fis = new FileInputStream(filePath);
            fileByte = new byte[fis.available()];
            fis.read(fileByte);
        } catch (FileNotFoundException ee) {
            //文件找不到异常 响应404
            try {

                FileInputStream fis = new FileInputStream("webapps/pages/404.html");
                fileByte = new byte[fis.available()];
                fis.read(fileByte);


            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }


    /**
     * @Description: 获取文件的媒体类型
     * @Param: []
     * @return: void
     */
    private void getFileMedia() {
        //Files工具类 可以自动获取媒体类型

        try {
            media = Files.probeContentType(Paths.get(filePath));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }


//        if (filePath.endsWith("html")) {
//            media = "text/html";
//        } else if (filePath.endsWith("css")) {
//            media = "text/css";
//        } else if (filePath.endsWith("js")) {
//            media = "application/x-javascript";
//        } else if (filePath.endsWith("png")) {
//            media = "image/png";
//        }
    }


    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getMedia() {
        return media;
    }

    public void setMedia(String media) {
        this.media = media;
    }

    public byte[] getFileByte() {
        return fileByte;
    }

    public void setFileByte(byte[] fileByte) {
        this.fileByte = fileByte;
    }
}
